package cn.bbdx.qsh.baking.controller;


import cn.bbdx.qsh.baking.response.JsonResult;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

@RestController
@RequestMapping("/v1/")
public class UploadController {

    @Value("${filePath}")
    private String dirPath;

    @PostMapping("upload")
    public JsonResult upload(MultipartFile file) throws IOException {
        //得到上传图片的名称
        String fileName = file.getOriginalFilename();
        //图片唯一性，后缀不变性
        String suffix = fileName.substring(fileName.lastIndexOf("."));
        //UUID.randomUUID()得到唯一标识符
        fileName = UUID.randomUUID() + suffix;

        System.out.println(fileName);

        //文件保存：建议按日期保存文件

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("/yyyy/MM/dd/");//固定语法，大小写不能变
        //得到日期相关路径   /2023/7/12
        String datePath = simpleDateFormat.format(new Date());

        //创建文件对象
        File dirFile = new File(dirPath + datePath);

        //如果文件不存在则创建
        if (!dirFile.exists()) {
            dirFile.mkdirs();//创建
        }

        //把图片保存到指定路径  异常抛出
        file.transferTo(new File(dirPath + datePath + fileName));
        //上传成功后  把图片路径响应给客户端
        return JsonResult.ok(datePath + fileName);
    }

    @PostMapping("remove")
    public JsonResult remove(String url) {
        //删除路径对应的磁盘中的文件
        new File(dirPath + url).delete();

        return JsonResult.ok();
    }
}
